package javacroft.business;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Département
 * @author hind
 */
public class Departement
{

    private String unNom;
    private List<Annee> lesAnnees;

    /**
     * Constructeur
     * @param unNom Nom du département
     * @param mesAnnees Liste des années du département
     */
    public Departement(String unNom, List<Annee> mesAnnees)
    {
        this.unNom = unNom;
        this.lesAnnees = mesAnnees;
    }

    /**
     * Constructeur
     * @param unNom Nom du département
     */
    public Departement(String unNom)
    {
        this.unNom = unNom;
        this.lesAnnees = new ArrayList<Annee>();
    }

    /**
     * Accesseur
     * @return Nom du département
     */
    public String getNom()
    {
        return this.unNom;
    }

    /**
     * Modifie le nom du département
     * @param unNom Nom du département
     */
    public void setNom(String unNom)
    {
        this.unNom = unNom;
    }

    /**
     * Liste des années du départament
     * @return Liste des années du département
     */
    public List<Annee> getLesAnnees()
    {
        return lesAnnees;
    }

    /**
     * Modifie les années
     * @param lesAnnees Liste des années du département
     */
    public void setLesAnnees(List<Annee> lesAnnees)
    {
        this.lesAnnees = lesAnnees;
    }

    @Override
    public String toString()
    {
        return this.getNom();
    }

    /**
     * Permet de comparer à un autre département
     * @param unDepartement Nom du département à comparer
     * @return Comparaison entre les noms des départements
     */
    public int compareTo(Departement unDepartement)
    {
        return (this.unNom.compareToIgnoreCase(unDepartement.getNom()));
    }

    /**
     * Permet de comparer deux noms de département
     * @param nom Nom du département à comparer
     * @return Comparaison entre les noms des départements
     */
    public boolean compareTo(String nom)
    {
        return unNom.equalsIgnoreCase(nom);
    }

    /**
     * Retourne l'année correspondant à un nom
     * @param nom Nom de l'année
     * @return Une année
     */
    public Annee getAnnee(String nom)
    {
        Iterator iter = lesAnnees.iterator();
        Annee anneeCourante = null;

        while (iter.hasNext() && !((anneeCourante = (Annee) iter.next()).compareTo(nom)))
        {
            continue;
        }

        return anneeCourante;

    }

    /**
     * Ajoute une année dans la liste
     * @param uneAnnee Année à ajouter
     */
    public void ajouterAnnee(Annee uneAnnee)
    {
        lesAnnees.add(uneAnnee);
    }
}
